Cambiar Archivos
Virtuales
En general, todos los archivos que se encuentran en el
directorio /proc solamente se pueden leer. Sin embargo,
algunos se pueden usar para ajustar la configuración del
kernel. Esto ocurre con los archivos del subdirectorio
/proc/sys.
Para cambiar el valor de un
archivo
virtual se debe usar el comando "echo" y el símbolo
">", para redirigir el nuevo valor al archivo. Por ejemplo,
para cambiar el nombre del host simplemente se debe escribir lo
siguiente:
echo www.jaimemontoya.com >
/proc/sys/kernel/hostname
Otros archivos actúan como conmutadores binarios
o booleanos. Por ejemplo al escribir "cat
/proc/sys/net/ipv4/ip_forward" se verá el valor
0 o el valor 1. El valor 0 indica que el
kernel no está realizando el reenvío de paquetes.
Si se usa el comando "echo" para cambiar el valor del
archivo ip_forward a 1, el kernel activará
inmediatamente el reenvío de paquetes:
echo 1 >
/proc/sys/net/ipv4/ip_forward
Como se puede ver, /proc es capaz de cambiar el
comportamiento
del kernel en varios aspectos. Aunque después de reiniciar
el sistema, los
cambios hechos en /proc se van, debido a que el kernel no
guarda dichos cambios para uso posterior, se pueden hacer cambios
permanentes recompilando el kernel, de modo que los scripts de
init (la madre o padre de todos los procesos)
escriban a /proc y que no se tengan que estar editando los
archivos virtuales de /proc cada vez que se reinicie
la
computadora.
Obtención de Información Útil del Sistema/Kernel
desde /proc
El sistema de archivos virtual /proc puede ser
usado para obtener útil información acerca del
sistema y del kernel en ejecución. Algunos de los archivos
virtuales de frecuente uso son:
- /proc/cpuinfo – información sobre el CPU
(modelo,
familia,
tamaño de la memoria
caché, etc) - /proc/meminfo – información sobre la memoria RAM
física,
espacio de intercambio swap, etc. - /proc/mounts – lista de los sistemas de
archivos montados. - /proc/devices – lista de todos los dispositivos
disponibles - /proc/filesystems – lista de los sistemas de archivos
soportados. - /proc/modules – lista de módulos
cargados. - /proc/version – versión del
kernel. - /proc/cmdline – parámetros pasados al kernel
al momento de iniciar.
Directorios en /proc
Primeramente aparecen los directorios de proceso,
los cuales pueden hacer referencia al ID de un proceso y contener
información específica de ese proceso. Por ejemplo
pueden tenerse los siguientes directorios de
proceso:
- /proc/1
- /proc/1177
- /proc/2335
- /proc/4536
- /proc/586
- /proc/9
El directorio /proc/acpi es justamente para el sistema
ACPI (Advanced Configuration and Power Interface), que fue
diseñado para permitir al sistema operativo
configurar y controlar los componentes individuales de hardware. Por ejemplo, ACPI
puede mostrar información sobre la batería en una
laptop, el adaptador de corriente AC, la temperatura,
ventilador del procesador, etc.
Por ejemplo la temperatura se puede conocer de esta
forma:
root1@root:~$ cat
/proc/acpi/thermal_zone/THRM/temperature
temperature:
40 C
El directorio /proc/asound muestra
información acerca de los controladores de audio. Debe
tenerse presente que /proc/asound solamente
existirá después que se haya insertado el primer
módulo ALSA (en el caso de Linux Debian Etch
al haber ejecutado "# apt-get install alsa-*" por ejemplo,
para la instalación de los controladores para la tarjeta
de sonido). Si no
existiera /proc/asound, simplemente significa que el
módulo de sonido no fue cargado correctamente.
El directorio /proc/bus contiene
información específica sobre los diversos buses
disponibles en el sistema. Por ejemplo /proc/bus/pci contiene los
datos actuales
de los buses PCI disponibles, mientras que /proc/bus/usb
contiene la información de los buses USB
disponibles.
/proc/driver es un directorio que contiene
información para drivers específicos que el kernel
está utilizando.
/proc/fs muestra qué sistemas de archivos
están siendo exportados. Esto consiste en montar sistemas
de archivos sobre la red e interactuar con esos
sistemas de archivos como si estuvieran montados
localmente.
El directorio /proc/ide contiene
información sobre los dispositivos IDE del sistema. Cada
canal IDE está representado como un directorio separado,
por ejemplo /proc/ide/ide0 y
/proc/ide/ide1.
/proc/irq es un directorio que se usa para
configurar la afinidad de una IRQ con una CPU. La
palabra IRQ proviene de Interrupt ReQuest, donde
una interrupción es simplemente una señal que el
hardware puede enviar cuando quiere la atención del procesador.
El directorio /proc/net proporciona una visión exhaustiva
de diversos parámetros y estadísticas de red. Cada directorio y
archivo virtual dentro de este directorio describe aspectos sobre
la configuración de la red del sistema.
El directorio /proc/scsi es para dispositivos
SCSI conectados.
/proc/self crea un enlace al proceso en
ejecución. Esto le permite verse a sí mismo sin
tener que conocer su ID de proceso. Dentro de un entorno de la
Shell, una lista del directorio /proc/self produce el mismo
contenido que una lista del directorio del proceso para ese
proceso. Esto significa que con /proc/self se puede mostrar el
proceso actual o el proceso en ejecución en un momento
dado. Por ejemplo:
root1@root:~$ ls -lah /proc/self
lrwxrwxrwx 1 root root 64 2007-09-07 01:59 /proc/self ->
6394
Se muestra que el proceso en ejecución es el
6394.
El directorio /proc/sys es diferente de otros en
/proc porque no sólo proporciona información
sobre el sistema sino también permite al administrador
activar y desactivar características del kernel. Una buena
forma de determinar si un archivo particular se puede configurar
o si solamente está diseñado para proporcionar
información es viendo los permisos que tiene dicho
archivo. Si el root o superusuario tiene permisos de escritura,
entonces es un archivo que se puede modificar, pero si solamente
existen permisos de lectura, el
archivo es únicamente para mostrar información y no
para que sea modificado.
El directorio /proc/tty proporciona información
acerca de los dispositivos tty disponibles y que se están
usando en el sistema.
Obviamente el /proc es una herramienta poderosa
con muchísimas aplicaciones útiles. Por ejemplo se
puede conocer en detalle la información del CPU de esta
manera:
root1@root:~$ cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model
: 10
model name : AMD Athlon(tm) XP
2800+
stepping : 0
cpu MHz :
2083.242
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu
: yes
fpu_exception : yes
cpuid level : 1
wp
: yes
flags
: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow ts
bogomips :
4170.79
A continuación se explica cada una de las salidas que
resultaron de ejecutar "$ cat /proc/cpuinfo".
"processor: 0"= significa que el número
"0" es el que el sistema le ha dado al procesador para
identificarlo. Suponiendo que hubiera existido otro procesador,
podría haber aparecido "processor: 3". Nunca puede
repetirse el número, pues cada procesador es identificado
por un número único.
"vendor_id: AuthenticAMD"= identifica el
fabricante del CPU.
"cpu family: 6" = muestra la familia de
procesadores a la
que pertenece el procesador detectado por el sistema, en este
caso a la familia 6, a la que también pertenecen
procesadores tales como Pentium II,
Pentium III, Intel Core™ Duo processor, Intel Core™2
Duo processor, etc.
"model: 10" = es el modelo específico del
procesador en relación a los de su mismo tipo, donde un
modelo con un número mayor que "10" correspondería
en este caso a una versión más reciente mientras
que un modelo con un número menor que "10" sería
una versión o modelo más atrasado
cronológicamente hablando
"model name: AMD Athlon(tm) XP 2800+" = releva el
nombre completo del modelo del procesador.
"stepping: 0" = entre menor es el número,
más atrasada es la revisión que se le ha hecho al
procesador. Ningún procesador es perfecto, de modo que
luego de sacarlos al mercado, al hacer
nuevas revisiones y mejoras significativas, el número
irá aumentando.
"cpu MHz: 2083.242" = muestra la velocidad del
procesador en MHz.
"cache size: 512 KB"= la memoria
caché es un conjunto de datos duplicados de otros datos
originales, con la propiedad de
que los datos originales son costosos de acceder, normalmente en
tiempo,
respecto a la copia en el caché. Cuando se accede por
primera vez a un dato, se hace una copia en el caché; los
accesos siguientes se realizan a dicha copia, haciendo que el
tiempo de acceso medio al datos sea menor. En este caso el
procesador cuenta con 512 KB de memoria caché.
"fdiv_bug: no" = el 30 de octubre de 1994 el
profesor
Thomas Nicely descubrió un error en la unidad de coma
flotante del Intel Pentium. Nicely observó que algunas
operaciones de
división devolvían siempre un valor erróneo
por exceso. Otras personas confirmaron rápidamente estos
errores en las divisiones. Este fallo de diseño
se hizo notorio muy rápidamente y se le dio el nombre de
"error FDIV del Pentium" (FDIV es la
instrucción de división en coma flotante de los
microprocesadores x86. En este caso el
procesador AMD Athlon(tm) XP 2800+ no tiene ese
error.
"hlt_bug: no" = HLT es una instrucción de
lenguaje
ensamblador
que detiene el procesador cuando no hay trabajo por
hacer, reduciendo significativamente el calentamiento del
procesador. El procesador en estudio no tiene errores con la
ejecución de esta instrucción.
"f00f_bug: no" = el procesador no tiene el error
"f00f", que consiste en que cuando el procesador recibe
una instrucción específica inválida, la
computadora
podría dejar de responder hasta que se apague o reinicie.
Este procesador en estudio no tiene ese error.
"coma_bug: no" = en este caso el CPU se queda en
un ciclo infinito ejecutando instrucciones pero no respondiendo a
ningún estímulo externo. Es contrario al
"f00f_bug", donde el procesador se detiene. En el caso de
"coma_bug", el procesador en vez de detenerse se mantiene
operando pero igualmente sin responder correctamente.
"fpu: yes" = el procesador es capaz de trabajar
con FPU (Floating Point Unit), es decir punto flotante en los
cálculos.
"fpu_exception: yes"= el procesador
automáticamente detecta y maneja excepciones o condiciones
que pueden afectar potencialmente un cálculo,
por ejemplo dividir entre cero ("x / 0") o la raíz
de un número negativo ("square(x)"),
etc.
"cpuid level: 1" = se deriva de "CPU
IDentification" y es una instrucción para la arquitectura x86.
Esto permite al software determinar la
presencia y características del procesador.
"flags: fpu vme de pse tsc msr pae mce cx8 apic sep
mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext
3dnow ts" = son usadas para controlar o indicar el estado
intermedio o final o de salida de diferentes
operaciones.
"bogomips: 4170.79" = es el valor
BogoMIPS, que es una unidad de medida de la velocidad del
CPU o computador
inventada por Linus Torvals para el kernel de Linux.
Jaime Montoya
Santa Ana, 8 de septiembre de 2007
El Salvador
![]() | ![]() ![]() | Página siguiente ![]() |